package com.mengniu.commerce.collect.third.response.item;

import lombok.Data;

import java.util.List;

/**
 * @author 13754
 */
@Data
public class GoodsInfoModel {

    private Code code;
    private Data data;
    @lombok.Data
    public static class Code {
        private String errcode;
        private String errmsg;
    }

    @lombok.Data
    public static class Data {
        private boolean isMultiSku;
        private int soldType;
        private boolean limitSwitch;
        private List<Sku> skuList;
        private long goodsTemplateId;
        private long goodsId;
        private int cycleDeliveryNum;
        private PointDeductRule pointDeductRule;
        private boolean isOnline;
        private String title;
        private boolean isCanSell;
        private List<GoodsRights> goodsRightsList;
        private List<GoodsClassify> goodsClassifyList;
        private SizeTableInfo sizeTableInfo;
        private TagInfo tagInfo;
        private long vid;
        private String goodsVideoImageUrl;
        private int subGoodsType;
        private String subTitle;
        private String sellUnitTitle;
        private long sellUnitId;
        private List<Category> categoryList;
        private BrandInfo brandInfo;
        private long createVid;
        private String goodsDesc;
        private PerformanceWay performanceWay;
        private boolean isCombine;
        private AttachDetail attachDetail;
        private int sort;
        private String outerGoodsCode;
        private String defaultImageUrl;
        private int saleChannelType;
        private int goodsType;
        private List<GoodsProperty> goodsPropertyList;
        private List<InnerProperty> innerPropertyList;
        private long latestFulfillDate;
        private int skuCycleSetting;
        private List<CategoryProperty> categoryPropertyList;
        private int deductStockType;
        private List<String> goodsImageUrl;
        private String goodsVideoUrl;
        private List<SpecInfo> specInfoList;
    }

    @lombok.Data
    public static class Sku {
        private double volume;
        private double marketPrice;
        private double skuStockNum;
        private double salePrice;
        private double costPrice;
        private String outerSkuCode;
        private double weight;
        private String skuBarCode;
        private boolean isDisabled;
        private List<CycleSku> cycleSkuList;
        private long skuId;
        private List<SkuSpecValue> skuSpecValueList;
    }

    @lombok.Data
    public static class CycleSku {
        private int cycleStockNum;
        private int cycleNum;
        private String cycleMarkingPrice;
        private boolean isValid;
        private long bizId;
        private String cyclePrice;
        private String cycleName;
    }

    @lombok.Data
    public static class SkuSpecValue {
        private long specId;
        private String specValueName;
        private String specName;
        private long specValueId;
    }

    @lombok.Data
    public static class PointDeductRule {
        private int openPointDeduct;
        private int useCondition;
        private int deductAmount;
        private int deductionType;
        private double useDiscount;
        private double deductDiscount;
    }

    @lombok.Data
    public static class GoodsRights {
        private long propValueId;
        private long propId;
        private String propName;
        private String propValueName;
    }

    @lombok.Data
    public static class GoodsClassify {
        private int classifyLevel;
        private long classifyId;
        private String name;
        private long parentId;
    }

    @lombok.Data
    public static class SizeTableInfo {
        private long specId;
        private String specName;
        private List<Param> paramList;
        private List<SizeTableDetail> sizeTableDetailList;
    }

    @lombok.Data
    public static class Param {
        private boolean isDefaultSelected;
        private String paramName;
        private boolean isSystemParam;
    }

    @lombok.Data
    public static class SizeTableDetail {
        private List<ParamValue> paramValueList;
        private String specValue;
        private long specValueId;
    }

    @lombok.Data
    public static class ParamValue {
        private String paramName;
        private double paramValue;
    }

    @lombok.Data
    public static class TagInfo {
        private long tagId;
        private String name;
    }

    @lombok.Data
    public static class Category {
        private int categoryType;
        private int categoryLevel;
        private long parentCategoryId;
        private String categoryName;
        private long categoryId;
    }

    @lombok.Data
    public static class BrandInfo {
        private String log;
        private long brandId;
        private String name;
        private int type;
    }

    @lombok.Data
    public static class PerformanceWay {
        private List<Delivery> deliveryList;
        private MallCycleGoodsConfig mallCycleGoodsConfig;
    }

    @lombok.Data
    public static class Delivery {
        private long deliveryId;
        private long deliveryNodeShipId;
        private int deliveryType;
        private long templateId;
    }

    @lombok.Data
    public static class MallCycleGoodsConfig {
        private FulfillCycleConfig fulfillCycleConfig;
        private long closingTime;
        private int alterAddress;
        private String closingTimeDetail;
        private int fulfillCycleInt;
        private int delayFulfill;
        private int delayCurrFulfill;
        private long delayDay;
    }

    @lombok.Data
    public static class FulfillCycleConfig {
        private int removeWeekend;
        private int cycleInterval;
        private List<Integer> cycleValues;
        private List<String> fulfillTimeOptions;
        private int cycleUnit;
        private int cycleTimes;
    }

    @lombok.Data
    public static class AttachDetail {
        private ServiceGroupInfo serviceGroupInfo;
    }

    @lombok.Data
    public static class ServiceGroupInfo {
        private int attachType;
        private List<ServiceGroup> serviceGroupList;
    }

    @lombok.Data
    public static class ServiceGroup {
        private boolean isRequired;
        private String groupName;
        private int groupType;
        private List<ServiceGroupValue> serviceGroupValueList;
        private long groupId;
        private boolean isMultiple;
    }

    @lombok.Data
    public static class ServiceGroupValue {
        private long valueId;
        private String valueName;
        private int valueType;
        private String bizId;
        private long attachId;
        private GoodsInfo goodsInfo;
    }

    @lombok.Data
    public static class GoodsInfo {
        private String outerWarehouseName;
        private String salePrice;
        private long goodsId;
        private String costPrice;
        private long outerWarehouseId;
        private int selectWarehouseType;
        private long skuId;
    }

    @lombok.Data
    public static class SpecInfo {
        private long specId;
        private String specName;
        private boolean isOpenSizeRecommend;
        private boolean specImgEnable;
        private List<SkuSpecValue> skuSpecValueList;
    }

    @lombok.Data
    public static class GoodsProperty {
        private long propValueId;
        private long propId;
        private String propName;
        private String propValueName;
    }

    @lombok.Data
    public static class InnerProperty {
        private long propValueId;
        private long propId;
        private String propName;
        private String propValueName;
    }

    @lombok.Data
    public static class CategoryProperty {
        private long propValueId;
        private long propId;
        private String propName;
        private String propValueName;
        private long categoryId;
    }
}
